﻿using Business_Layer;
using Data_Access_Layer;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CaffeBillard
{
    public partial class ArticleForm : Form
    {
        public ArticleForm()
        {
            InitializeComponent();
            dgvSup.AutoGenerateColumns = false;
        }
        
        private bool _curr;

        private ArticleController _manager;

        private void ArticleForm_Load(object sender, EventArgs e)
        {
            
            DataGridViewComboBoxColumn clNCC= new DataGridViewComboBoxColumn();
            clNCC.DisplayIndex = 0;
            clNCC.Width = 100;
            clNCC.DataPropertyName = "Article";
            clNCC.DataSource = Article.Objects.ToList();
            clNCC.DisplayMember = "ArtName";
            clNCC.HeaderText = "Nhà cung cấp";
            clNCC.Name = "ArtcileColumn";
            clNCC.ValueMember = "Id";
            dgvSup.Columns.Insert(5,clNCC);
            dgvSup.DataSource = new BindingSource { DataSource = Article.Objects.ToList() };
        }

        private void dgvSup_RowValidated(object sender, DataGridViewCellEventArgs e)
        {
            if (_curr)
            {
                try
                {
                    //Lấy dòng hiện tại
                    var _cur = dgvSup.Rows[e.RowIndex];

                    //Tạo một đối tượng Article mới
                    Article sup = new Article();

                    //Gán các giá trị cho các thuộc tính tương ứng trên datagridview
                    sup.Id = Convert.ToInt32(_cur.Cells[1].Value.ToString());
                    sup.ArtName = _cur.Cells[2].Value.ToString();
                    sup.Price = float.Parse(_cur.Cells[3].Value.ToString());
                    sup.Unit = _cur.Cells[4].Value.ToString();
                    sup.Supplier = int.Parse(_cur.Cells[3].Value.ToString());
                    sup.Quantity = int.Parse(_cur.Cells[5].Value.ToString());
                    sup.Deleted = false;
                    //Gọi phương thức thêm hoặc cập nhật từ lớp Articlemanager
                    _manager.InsertOrUpdate(sup);
                    //Nếu xảy ra lỗi thì thông báo lỗi
                    if (_manager._err != "")
                        MessageBox.Show(_manager._err, "Thông báo", MessageBoxButtons.OK,
                                    MessageBoxIcon.Warning);
                    LoadSup();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Lỗi hệ thống \n" + ex.Message, "Thông báo", MessageBoxButtons.OK,
                                     MessageBoxIcon.Warning);
                }
            }
            //Gán lại giá trị cho _curr
            _curr = false;
        }
        private void LoadSup()
        {
            dgvSup.DataSource = new BindingSource { DataSource = _manager.GetAll() };
        }



        private void dgvSup_RowValidating(object sender, DataGridViewCellCancelEventArgs e)
        {
            try
            {
                if (dgvSup.IsCurrentRowDirty && e.ColumnIndex > 0)
                {
                    var _curren = dgvSup.Rows[e.RowIndex];
                    if (_curren.Cells[2].Value == null || _curren.Cells[4].Value == null)
                    {
                        MessageBox.Show("Không được để trống dữ liệu!", "Thông báo", MessageBoxButtons.OK,
                                        MessageBoxIcon.Warning);
                        e.Cancel = true;
                    }
                    
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Lỗi hệ thống \n" + ex.Message, "Thông báo", MessageBoxButtons.OK,
                                        MessageBoxIcon.Warning);

            }
            _curr = dgvSup.IsCurrentRowDirty;
        }
    }
}
